hive计算,报错FAILED: return code 3 fromorg.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

您所在的位置:网站首页 spark 30041 hive计算,报错FAILED: return code 3 fromorg.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

hive计算,报错FAILED: return code 3 fromorg.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

2023-03-23 12:35| 来源: 网络整理| 查看: 265

问题:在运行hivesql的时候,可能会碰到错误代码:

FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

环境:hive使用的MR引擎计算的。

原因:开启了hive的mapjoin,(设置参数数hive.auto.convert.join=true 默认开启)在map端就会进行表的join,

可以省略reduce阶段,时效更快,但是需要足够的内存,因为在map端join,需要其中一张表在每一个map中都有完整的数据,才能和另外一张表分布在map中的数据关联,如果内存不够,就会报这个错。

mapjoin的过程:

通过MapReduce Local Task,将小表读入内存,生成HashTableFiles上传至Distributed Cache中,这里会HashTableFiles进行压缩。MapReduce Job在Map阶段,每个Mapper从Distributed Cache读取HashTableFiles到内存中,顺序扫描大表,在Map阶段直接进行Join,将数据传递给下一个MapReduce任务。

Map阶段进行表之间的连接。而不需要进入到Reduce阶段才进行连接。这样就节省了在Shuffle阶段时要进行的大量数据传输。从而起到了优化作业的作用。

解决措施:

1、在hivesql的时候指定 hive.auto.convert.join=false

2、修改配置文件hive_conf.xml

hive.auto.convert.join

false//true修改为false

Enables the optimization about converting common join into mapjoin

mapjoin的使用方法以及注意事项参考链接:

https://blog.csdn.net/sinat_37574187/article/details/120444216



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3